---
title: OpenFeign
---

OpenFeign 提供了一种声明式的远程调用接口，可以大幅简化远程调用的编程体验。

可以让我们就像调用本地方法一样调用远程方法。

## 实现原理
OpenFeign 使用了 动态代理 技术 来封装远程服务调用的过程，远程服务的信息被写在了 FeignClient 接口中。OpenFeign 通过解析这些注解来生成一个动态代理类，这个代理类会将接口调用转化成一个远程服务调用的 Request ，并发送给目标服务。


在项目初始化阶段，OpenFeign 会生成一个代理类，对所有通过该接口发起的远程调用进行代理。

![71e8f4670ff50088a676051efe04fef3](https://img.wkq.pub/pic/71e8f4670ff50088a676051efe04fef3.webp)



上图中的 步骤一 和步骤三是在项目启动阶段完成的，只有步骤四是在调用远程服务是发生在项目的运行阶段。

下图是 OpenFeign 组件加载的重要阶段：

![6277f25f9dc535cd6673bd9bc960c409](https://img.wkq.pub/pic/6277f25f9dc535cd6673bd9bc960c409.webp)



## Feign日志打印

## Feign 超时判定

